home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 47.7z / BS1 part 47 / Aladdin 4D v3.2 Upgrade (1994-04-13)(Adspec Programming)[update disk].7z / Aladdin 4D v3.2 Upgrade (1994-04-13)(Adspec Programming)[update disk].adf / Program.LZH / Fountain.ReadMe < prev    next >
Text File  |  1994-04-14  |  50KB  |  1,009 lines

  1. Tutorials - Fountains
  2.  
  3. GENERAL:
  4.  
  5. This section has tutorials on the fountain objects. A specific
  6. discussion of each gadget and its use is presented in the
  7. reference section on fountains. It is suggested that you work
  8. through this tutorial section, referring to the reference section
  9. for each specific feature discussed, if desired. After working
  10. through the tutorials, you may use the reference section
  11. exclusively.
  12.  
  13. Fountain objects are related to flare objects with various
  14. extensions. Specifically, they allow you to determine a specific
  15. number of flare objects, their initial positioning and how they
  16. behave during an animation. This is an interesting implementation
  17. of a particle system that uses the flare object technology. Using
  18. the flare object technology allows you to work with a particle
  19. system in very quick time and with low memory useage. They can be
  20. used for fireworks, starfields, magic wands, writing, trails,
  21. clouds, and on and on.
  22.  
  23. WARNING: Fountain objects are not for the weak hearted! This is
  24. a rather extensive implementation. There are capabilities within
  25. capabilities, and all require some thought and learning. In
  26. addition, you can tell the fountain objects how they should
  27. behave before an animation begins, using something called
  28. preroll. This concept is new with the fountains.
  29.  
  30. WARNING: Fountain objects, like gases, are not limited except for
  31. your memory and patience. When used with understanding, they are
  32. the fastest rendering particle animation system we have seen. You
  33. can, however, ask for an unlimited number of particles. You can
  34. also ask for extremely short lifespans for the particles. This
  35. combination can result in very long rendering times, especially
  36. when preroll is on. RESIST YOUR URGE to ask for large numbers of
  37. particles until you have gained a full understanding of the
  38. fountains. Also, there is no abort on fountain initialization or
  39. render, so if you set up a fountain that will take too long to
  40. render, you will either have to wait until it is done, or reboot
  41. the computer. This is simple to avoid.
  42. Basically, there are three things you can do to cause fountains
  43. to take a long time to render.
  44.  
  45. 1: Use a large image size for the particles. (can also be done by
  46. setting the camera very close)
  47. 2: Use a small range for the particle life.
  48. 3: Use a large number of particles.
  49.  
  50. Obviously, if you use a small image size, a large life range, and
  51. a small number of particles, the fountain will render very
  52. quickly.
  53.  
  54. Further, if you are in the render screens and ask to redraw a
  55. frame of the animation the fountain must be calculated along the
  56. timeline to the time you are asking for, since the particle
  57. positions are dependent on previous particle lifetimes and
  58. positions at their birth. This can take a while based on your
  59. values used in number 2 and 3 above.
  60.  
  61. As you gain experience with the fountains, you will gain
  62. understanding of just how far you can push these parameters and
  63. still have a rendering time that is short enough for your
  64. purpose.
  65.  
  66.  
  67. FIRST LOOK:
  68.  
  69. Start the program or select "new" if you have been working. Flat
  70. view in the Y axis. Choose the polygon fountain menu item add.
  71.  
  72. As you can see from the resulting window there are many aspects
  73. of the fountains you can control. The apparent complexity of the
  74. window shows you just how much control you have. In addition,
  75. there are many gadgets here that open further windows for even
  76. greater control. BE PATIENT. Fountains are not a feature for the
  77. light hearted user. They must be understood if you want to get
  78. the powerful results they are capable of.
  79.  
  80. We will change some of the defaults a little later. Just accept
  81. the window this time. You will see a simple straight line poly (2
  82. points) appear with one end at the current attach point
  83. (currently at the origin).
  84. This poly is the "stem" of the fountain. It is your handle on
  85. the fountain for assigning textures, attribute lists and moving
  86. it around. The first point (point 0) of the stem, now at the
  87. origin, is the source of the particles that are generated by the
  88. fountain.
  89. Select the fountain and choose the polygon menu item attributes.
  90. Add an attribute list. Select control and name it fountain_test.
  91. Select member control and give it an entry color of full yellow
  92. (rgb: 255,255,0) and an exit color of full blue (rgb: 0,0,255).
  93. Do NOT hit match.
  94.  
  95. NOTE that the color and show flags are the only aspects of the
  96. list used by the fountain.
  97.  
  98. Accept the windows back to the editor. Since the fountain is
  99. selected, it will use this attribute list. Now with the fountain
  100. selected, choose the polygon menu item textures. Add a texture
  101. list. Select control and name it fountain_test. Select member
  102. control. Click on the SELECT gadget. Change to show bitmaps.
  103. Click the LOAD gadget. Go to the aladdin4d:textures/flares
  104. drawer. Load one of the "star" flares you find there. After the
  105. texture loads, select it and accept the window.
  106.  
  107. Note that you must select it. If you have selected it properly,
  108. you will see the name of the texture in the member control window
  109. in the lower left corner, with the number of frames and color
  110. depth and size shown.
  111.  
  112. In the member control window choose the SUGGESTED gadget. Move
  113. the color and strength gadgets to 1.0. Click the MATCH gadget.
  114. Accept the windows back to the editor. The fountain will now use
  115. the flare image you have chosen when it renders.
  116.  
  117. Now SAVE the drawing as fountain_tut.4d. (It will be very small,
  118. about 3500 bytes.) The following tutorials assume the fountain
  119. exists, and are fairly long. You will probably not finish them at
  120. a single setting. By saving it, you will be able to leave it at
  121. any time, then reload it to continue.
  122.  
  123. Before we render the fountain, it is important to realize that
  124. fountains are dynamic systems. In other words, they change over
  125. time. Lets see this. Choose the view menu item preview anim.
  126. Change the Number of frames to 180, and from 1 to 180. Accept the
  127. window.
  128.  
  129. What you see in the preview window on the first frame is the
  130. fountain stem. It is visible in the preview and editor, but will
  131. not be visible in the fully rendered images. As the animation
  132. goes along, you will see particles emerge from the fountain stem
  133. first point. It is the fountain source. They emerge in a random
  134. fashion and move along a straight line away from the source. They
  135. live a little while, then die. When one dies, a new one is born
  136. at the source to replace it. Remember, this is happening in full
  137. 3D. Some particles are coming straight out toward you and some
  138. are going away from you. The particles are moving inside a
  139. virtual sphere in space. After watching this a while so you
  140. understand it, hit the escape key to return to the editor.
  141.  
  142. I'm sure you want to see what a rendered fountain looks like
  143. before we talk about controlling the particles movement, so let's
  144. do that. We already have a texture on this one and an attribute
  145. list, so choose the view menu item render options. Turn ON the
  146. light and fill. They are required to render fountains. Select the
  147. "set screen mode" gadget. If you are using a display enhancer,
  148. you may choose it, or you may use standard ham or ham8. Fountains
  149. are objects of much subtlety when rendered, so the best display
  150. mode you have is the one you should use. Accept the windows back
  151. to the editor.
  152.  
  153. Now choose the view menu item render. The window opens ready for
  154. frame 1. Remember the preview? Frame 1 has particles only at the
  155. source point. If you render frame 1, you can expect to see
  156. particles only at this point. Another frame may be more
  157. interesting. Change the number to 60, and press the return key.
  158. The render screen you shose opens with a wait pointer.
  159.  
  160. The program is initializing the fountain and then updating the
  161. fountain to the frame you requested. You cannot abort the render
  162. during this phase. With the default fountain, this takes very
  163. little time.
  164.  
  165. Then the racetrack window opens to update you on the progress of
  166. the imaging of the fountain. This is an invisible operation, you
  167. can't see the image being formed, so the racetrack window keeps
  168. you posted on its progress. You cannot abort the render during
  169. this phase, either.
  170.  
  171. Once the racetrack window closes, the final compositing will take
  172. place. If you had any polygons at this point, they would be
  173. rendered with the fountains being composited into the final
  174. image. You will see the fountain particles being rendered with
  175. the star flare image you chose. Notice that the fountain stem
  176. does not render. At first you will not see any of the image. The
  177. particles are only in a small area in the center of the screen.
  178. As the scanline render reaches the area, you will see the
  179. particles appear.
  180.  
  181. This is not a very impressive image. If you call your family in
  182. to look at it, their yawn will be more impressive than the image.
  183. Don't worry, we will get to the impressive stuff later. Right
  184. now, we are just getting a basic understanding of the mechanics
  185. involved in rendering fountains. Again, be patient and thorough.
  186.  
  187. The fountains, like the flares, use a type of transparency
  188. mapping when they are composited. The bitmap used for the image
  189. is mostly black. Where it is black the particle is completely
  190. transparent. As the "luma", or highest color component of the
  191. bitmap increases, the particle gains density.
  192.  
  193. Return to the editor. Let's begin a fairly indepth look at what
  194. controls you will ordinarily use over the fountains.
  195.  
  196. In normal use you will want to control:
  197. 1. particle number
  198. 2. particle life
  199. 3. particle direction
  200. 4. particle distance
  201.  
  202. Other things you will want to control for some drawings:
  203. 5. particle rotation (in space)
  204. 6. particle drift
  205. 7. particle placement with paths
  206. 8. fountain preroll
  207.  
  208. And for rendering, you will want to control:
  209. 9. particle image
  210. 10. particle size
  211. 11. particle color
  212. 12. particle strength
  213. 13. particle image rotation
  214. 14. particle obscurring
  215.  
  216. Let's look at the first group.
  217.  
  218.  
  219. 1. PARTICLE NUMBER:
  220.  
  221. Select the fountain (only) and select the polygon fountain menu
  222. subitem alter, or use the alt Y keys. The fountain control
  223. window opens. Find the gadgets labeled Number Particles on the
  224. right side. There are two, an entry and exit value. Right now
  225. they read 60, 60. You may change them to any number. Typical use
  226. is in the 10 to 300 range. Whatever number you enter, you are
  227. telling the fountain to maintain this count. As a particle
  228. expires, a new one will be created to replace it so the count
  229. always remains at the value you are requesting. This is simple
  230. and obvious. Instead of entering a few values and looking at
  231. them, let's do something more interesting. Change the entry side
  232. to a 1, and the exit side to a 200. Accept to the editor and
  233. preview it. Notice that at the entry to the animation, the
  234. fountain generates only a few particles, and at the end, far
  235. more. The change in particles is linear. It may be more
  236. interesting to have the change be non-linear. In the editor,
  237. alter the fountain again. Notice the cspline gadget beside the
  238. number particles gadgets. Click it. The cspline select window
  239. opens. There are none at this time. Click add, then control. You
  240. could do anything here you wanted. Click LOAD and load the
  241. periodic_eases.csp cspline from your csplines directory. If you
  242. have been using csplines, you know intuitively what this will do.
  243. Time runs from left to right in the anim. The entry value is at
  244. the bottom and the exit value is at the top. So this will cause
  245. the fountain to be emitting 1 particle at frame 1, and build to
  246. 200 in a nonlinear fashion, then at the middle of the anim, start
  247. reducing the count, again nonlinearly, and end with the count at
  248. 1 at the end of the anim. Preview it to verify this. You can use
  249. the cspline to have absolute control over the number of particles
  250. occuring at any time in the animation and their rate of change.
  251.  
  252.  
  253. 2. PARTICLE LIFE:
  254.  
  255. As you watch, you realize that a particle is born at the source,
  256. then moves to the outside of some random point on a virtual
  257. sphere. Only a few actually make it to the outside. This takes
  258. about 30% of the animation for them. The others never live long
  259. enough to get there. Lets change this.
  260. Alter the fountain. Find the gadgets labeled Life in the right
  261. side gadgets. Here you find two sets of entry/exit gadgets, one
  262. labeled Max and one Min. Now think a second. The value of the
  263. left gadgets is the value the fountain's particles will have if
  264. they are born at frame 1. The value of the right gadgets is the
  265. value a particle born at the last frame of the animation will
  266. have. As the animation proceeds, the values are averaged so a
  267. particle born at 0.5 of the animation, or the middle frame, will
  268. get a lifetime halfway between the two values.
  269. Now, why is there a Max and a Min? The two values allow you to
  270. set a range of life. The Max and Min are limits. A particle will
  271. get a random value between the the limits. If you set a max/min
  272. of 0.3 and 0.1 at entry and exit, a particle will get a life that
  273. somewhere between 0.3 and 0.1 no matter when it is born. If you
  274. set different values in the exit, a particle's life will change
  275. depending on when it is born.
  276. Let's try a few changes. First lets make the number of particles
  277. not change so it is easier to see the effect of the life. Change
  278. the entry/exit particle number back to 60/60. Click the cspline
  279. for the particle number, and free it. This is sometimes
  280. important, even if there is no change, so it is a good habit to
  281. get into.
  282. Now for the life values. To make this text easier to read, let's
  283. mention the values as a group of four values, entry max/min and
  284. exit max/min. So right now you see values of 0.3/0.01 0.3/0.01.
  285. Change this to 0.5/0.01 0.5/0.01 and preview. Notice that the
  286. particles live longer just like you expected. Alter the fountain
  287. and change the life to 1.0/0.5 1.0/0.5 and preview. Watch this
  288. one carefully. An initial burst occurs. The particles that are
  289. born have a life between 0.5 and 1.0. There are 60 of them. Now
  290. no new particles are born until one dies since the particle
  291. number is not changing. When the animation is 0.5 done, you see
  292. some of them die and at the same time, new ones are born to
  293. replace them and maintain the particle count. These new ones also
  294. have a life between 0.5 and 1.0. Since there is only 0.5 of the
  295. animation left, none of these will ever die. As the animation
  296. goes beyond 0.5, you see other particles die and be replaced.
  297. These are the particles that were initially born with a life set
  298. between 0.5 and 1.0. Watch this until you understand what is
  299. happening.
  300. Alter the fountain again and enter values of 0.1/0.1 0.1/0.1 and
  301. preview. Notice that the particles live 0.1 of the animation The
  302. max/min limits being the same mean all particles will have the
  303. same life. At 0.1 of the animation, the initial 60 particles will
  304. die at the same time and be replaced by 60 more, again all with a
  305. life of 0.1. Is this what you expected? While you have the life
  306. set this way, change the particle number entry/exit to 0/60 and
  307. preview. Notice that all particles are reaching the edge of the
  308. virtual sphere and travel at the same "speed". This is a useful
  309. one for many of your drawings.
  310. You may try different values for the life and preview the
  311. results. As you do, there are four main things to notice and
  312. remember.
  313. a: A particle cannot be born until the number changes or an old
  314. one dies.
  315. b: The distance a particle travels is related to its lifetime
  316. c: the total distance traveled is set by the longest life
  317. possible.
  318. d: DO NOT use values of 0.0/0.0 0.0/0.0. These are not clamped.
  319. You will end up with an animation that shows no particles as
  320. expected. Also as expected, each frame will take longer and
  321. longer to calculate and could result in a crash of the system. In
  322. general use, do not use a value of less than 0.001.
  323.  
  324. One more point of interest. The particle life values can range
  325. from 0.0 up. There is no upper limit. This is because if you
  326. later use preroll, you may want values up to 2.0. Values above
  327. 2.0 are not useful at this time, but in the future may have
  328. special meanings.
  329.  
  330. WARNING: The smaller the range of life between the limits you set
  331. for max/min, the longer the fountain will take to calculate. Very
  332. small values here, especially with large numbers of particles,
  333. can require long periods of time to calculate. There is no abort
  334. during the calculations for reasons of efficiency. Use discretion
  335. in setting your life values to very low values, especially if you
  336. are using a larger number of particles.
  337.  
  338.  
  339. 3. PARTICLE DIRECTION:
  340.  
  341. The fountain you have been experimenting with has created a
  342. virtual sphere with its particles. Let's look at altering this.
  343. Alter the fountain. Use particle number of 60/60 with no cspline.
  344. Set the life values to their defaults of 0.3/0.01 0.3/0.01, again
  345. with no cspline. Now find the area of gadgets labeled Direction.
  346. Notice that there are three directions, X,Y and Z. Notice that
  347. each has entry/exit max/min values. You should be able to guess
  348. how these are used. Let's take the Y direction for an example.
  349. Right now it has values of 180.0/0.0 180.0/0.0. This means a
  350. particle when it is born (whenever it is born, since these don't
  351. change) has a "y direction" of between 180 and 0. So just what
  352. does this mean?
  353. It is easier to see than to read, so let's look at it. Change the
  354. y direction values to 180.0/0.0 0.0/0.0. Preview the animation.
  355. Notice that the direction of the particle is fixed for the
  356. particle at the time it is born. As the animation moves along,
  357. the general tendency of the fountain is to move from a sphere to
  358. a single verticle line. This will be much easier to see if we get
  359. rid of the z direction components. Change the Z direction values
  360. to 0.0/0.0 0.0/0.0 and preview it again. You now only have the
  361. particles in a flat plane. Do you understand what is happening?
  362. Alter the fountain and enter Y values of 90.0/90/0 180.0/0.0 and
  363. preview. This one should firm up your understanding. At frame 1,
  364. the particles have a direction of 90 degrees on the y. All
  365. particles have this direction so straight line is being emitted.
  366. As the animation progresses, they get a direction that is between
  367. two values that change up to 180.0/0.0 at the last frame. The
  368. straight line opens to a 180 degree fan shape.
  369.  
  370. There is a tremendous amount of control here. You may experiment
  371. with the direction values to see what types of fountains you can
  372. make. Some suggested values that are of particular interest are,
  373. given in entry/exit max/min on the x,y,z:
  374. sphere:
  375. x:   0.0/0.0   0.0/0.0
  376. y: 180.0/0.0 180.0/0.0
  377. z: 360.0/0.0 360.0/0.0
  378. hemisphere:
  379. x:   0.0/0.0   0.0/0.0
  380. y:  90.0/0.0  90.0/0.0
  381. z: 360.0/0.0 360.0/0.0
  382. quadrantsphere:
  383. x:  0.0/0.0  0.0/0.0
  384. y: 90.0/0.0 90.0/0.0
  385. z: 90.0/0.0 90.0/0.0
  386. disk in xy plane:
  387. x:   0.0/0.0    0.0/0.0
  388. y:  90.0/90.0  90.0/90.0
  389. z: 360.0/0.0  360.0/0.0
  390.  
  391. Obviously, you can achieve these in different combinations. For
  392. instance a sphere can also be achieved by using 360.0/0 on the y
  393. values. It will be significantly different than the one listed
  394. and yet occupy the same area. Notice that if you use a value of
  395. 3600.0 instead of 360.0 for the z direction you still get a
  396. sphere, but again, it is quite a different distribution.
  397. There are many other sets that are useful. As you gain
  398. experience, you will be able to set the values you want easily
  399. and intuitively.
  400.  
  401. An interesting note here is: What is the direction when values
  402. are all at 0.0? This is the default direction. If you try to
  403. preview it, you will not see the particles. This is because they
  404. are moving straight up. That is where the stem is, so they are
  405. obscurred by the stem in the preview. You would see them in the
  406. render.
  407.  
  408. There is a related direction control. It is called ALIGN and is a
  409. boolean gadget in the upper right area of the control window. It
  410. is normally off. Let's look at it when it is on. Alter the
  411. fountain to be a disk in the xy plane with the values shown
  412. above. If you are flat viewed in the Y axis and preview this you
  413. will see a straight line because you are looking at the disk edge
  414. on, so rotate your view a little on the x axis by using the 7 key
  415. on the number pad, then the 8 key to stop the rotation. Use a
  416. view angle of about 105,180,0 as read out at the top of the tool
  417. box. This way you are looking slightly down on the disk. Preview
  418. to make sure you have a disk.
  419. Return to the editor. Select the point at the top of the fountain
  420. stem. Move it a little to the right, so the stem makes about a 20
  421. degree angle with verticle. Preview this again. Notice that there
  422. is no change in the disk. Now alter the fountain and depress the
  423. ALIGN gadget and preview. Notice that the disk is now rotated at
  424. about a 20 degree angle. This ability is not generally used, as
  425. you can achieve the same results by assigning the fountain to a
  426. path, and then you can change the results over time. But for some
  427. cases, this is an easier method, so it has been included.
  428.  
  429. There is also a related direction control. It is called Dir
  430. Linea(r). If this is off, as is the default, the particles
  431. direction is random between the limits you set. If on, the
  432. particles are ordered by their creation between the limits you
  433. set. For instance, if you have the Y direction set to a max/min
  434. of 360.0,0.0 and have 360 particles, with dir linea off, the
  435. particles are given a Y direction random between 360 and 0 when
  436. they are born. Particle 1 may get 247.6 and particle 2 may get
  437. 17.9, etc. If dir linea is on, particle 1 would get 1 and
  438. particle 2 would get 2, etc. If you used 180 particles, particle
  439. 1 would get 2 and particle 2 would get 4, etc. This gives you the
  440. ability to get perfectly spaced circles of particles easily by
  441. using particles of the same life at a fixed distance.
  442.  
  443. Later, under particle placement, we will explore using paths to
  444. control the fountains. There, you will see some exquisite methods
  445. of control of particle position. Other related controls are the
  446. drift, which we will look at later, and the distance, which we
  447. will look at now.
  448.  
  449.  
  450. 4: PARTICLE DISTANCE:
  451.  
  452. There are extensive controls over the distance from the source
  453. that the particle is created at and moves to. Alter the fountain
  454. and turn the ALIGN off. Find the gadgets in the lower left column
  455. labeled Distance. There are four sets, Orig(ination) max
  456. entry/exit, Orig min entry/exit and Dest(ination) max entry/exit,
  457. Dest min entry/exit. The values in the Orig gadgets control the
  458. particle distance when it is born, and the values in the Dest
  459. gadgets control particle distance when it dies. We will list the
  460. values as Orig max/min, Dest max/min to make reading the text
  461. clearer. When a fountain is created, these values are set to
  462. 0.0/0.0, 0.0/0.0, 10000.0/5000.0, 10000.0/5000.0. This means all
  463. particles will be born at the source and have a destination
  464. between 5000 and 10000 units. You are unlimited in these numbers,
  465. they may be any number, including negative values.
  466. Let's change them a few times to get an idea of the power here. 
  467. Let's do an expanding ring. Change the Orig values to
  468. 0.0/25000.0, 0.0/25000.0, and the Dest values to 0.0/0.0,
  469. 0.0/0.0. Preview this. Notice that during the animation, the
  470. birth position of the particles expands outward. The destination
  471. position is maintained at the source, so as the "ring" expands,
  472. the particles always head toward the source. Notice that most of
  473. the particles do not get there. The default fountain has the
  474. particles travel at a fixed "speed". If the longest lived
  475. particle is 0.3, and the largest distance to travel is 25000,
  476. only a particle that lives 0.3 will travel 25000. A particle that
  477. lives half as long will travel only half as far. You can toggle
  478. the fountain so that all particles will travel their assigned
  479. distance, no matter how short they live.
  480.  
  481. Find the gadget in the upper right of the window called "Motion".
  482. By default it reads Constant. Click it and it will change to
  483. relative. Preview this. Notice that all the particles now reach
  484. the source, with a resulting variation in "speed".
  485.  
  486. There is also a control Dest Type just below the distance gadgets
  487. which is listed. It is a boolean and can be either Relative or
  488. Constant. If relative, the Dest values are absolute distances
  489. from the fountain source. If constant, the values are absolute
  490. distances from the particle's position when it is born. Change it
  491. to Constant and preview. Is this what you expected? Notice that
  492. the Dest values are all 0. When in relative, this means the
  493. particles will all move toward this distance from the source, ie,
  494. to the source in this case. When in constant, this means the
  495. particles will move this amount from their birth positions. Since
  496. it is 0, they do not move from their birth position. (If you vary
  497. the strength of the particle so they are bright when first born
  498. and fade off, this can be quite useful.)
  499.  
  500. Another related option is called Disp(lay). It is a boolean in
  501. the upper right part of the window. If Random, as is the default,
  502. the program will try to insure that there are no recognizable
  503. patterns created by the particles. If Pattern the program allows
  504. recognizable patterns to be created. The patterns are most
  505. obvious when creating a 2D disk type of fountain, but can still
  506. be perceived with full 3D fountains.
  507. To see the difference, change the distance Orig variables to all
  508. 0.0. Change the distance Dest vars to 10000.0/10000.0,
  509. 10000.0/10000.0. Use a particle number of 60/60. Use life values
  510. of 0.3/0.01, 0.3/0.01. Now use directions to set up a disk in the
  511. xy plane as described above. Make the Motion constant, and the
  512. dest type relative. Preview this with the disp set to random,
  513. then change it to pattern and preview it. The patterning here is
  514. obvious because of the distance min/max being the same. Changing
  515. this will make less obvious patterns. You may want to use the 7
  516. key to rotate your view for a more advantageous view position in
  517. the preview.
  518.  
  519. Alter the fountain again and look at the cspline gadgets beside
  520. the distance gadgets. Notice that there is a cspline gadget
  521. beside the four Orig gadgets, and one beside the four Dest
  522. gadgets. These control the rate of change between the values you
  523. have in the entry/exit sides of these gadgets. One cspline
  524. controls both the max/min of each.
  525. Notice that there is a third cspline gadget between these two,
  526. and slightly offset to the right. This is the INDIVIDUAL PARTICLE
  527. cspline gadget for distance. If you look around the window at the
  528. other groups of cspline gadgets, you will see this pattern for
  529. some of the other controls as well. The individual particle
  530. cspline gadget allows you to control the behavior of each
  531. particle during its life! For distance, for instance, if you use
  532. the periodic_eases cspline you have loaded, each particle will
  533. move from its entry position to its exit position, then back
  534. again.
  535.  
  536.  
  537. You will want to try many variations on the distance variables,
  538. both with constant and relative motion and dest types, with
  539. csplines, pattern displays, varying the particle number, etc. As
  540. you experiment, you will probably find several setups that you
  541. like. You may want to save a few of these, but for now, the
  542. important thing is to experiment.
  543.  
  544.  
  545.  
  546. Now let's look at the second group. The first group were things
  547. you will want to control every time you use a fountain. These are
  548. things you will want to use occasionally.
  549.  
  550.  
  551. 5: PARTICLE ROTATION:
  552.  
  553. As you have discovered, you can change the direction a particle
  554. takes when it is born, and you can change the distance of the
  555. particle is born and when it dies. Particle rotation, in effect
  556. allows you to change the "direction" of the particle over its
  557. life.
  558. Locate the gadgets in the right column labeled Rotation. Just
  559. like the direction controls, there are three directions, X,Y and
  560. Z. Notice that each has entry/exit max/min values. You should be
  561. able to guess how these are used. Let's take the Y direction for
  562. an example. Right now it has values of 0.0/0.0 0.0/0.0. This
  563. means a particle will not rotate around the Y axis during its
  564. life. Let's change this to see the result.
  565. You have probably been changing many values in the fountain, so
  566. let's start with a new one. Don't use the "new" menu item. If you
  567. do, you have to load your texture and attributes lists again.
  568. Instead, let's create a new one in a new space. Set the drawing
  569. with a RMB click in the editor window. Click the space control
  570. gadgets (bottom of tool box) with a RMB. The space control window
  571. opens. Click the Create gadget. You have a new space. Flat view
  572. in the Y axis. Use the Polygon fountain menu subitem Add. The
  573. fountain control window opens with all the defaults in place. Now
  574. change the direction values so the x and z values are all 0.0.
  575. Change the Y direction values so they are a max/min of 360.0/0.0,
  576. both entry and exit. This will create a flat disk that is easily
  577. seen from a flat Y view. Preview this. (If you rotate around the
  578. z axis in the preview using the 1 and 3 keys, this becomes
  579. apparent.)
  580. Now alter the fountain. Change the rotation Y values to
  581. 360.0/360.0, 360.0/360.0. Preview this. Notice that all the
  582. particles now rotate 360 degrees around the Y. Alter the fountain
  583. and change the values to 360.0/0.0, 360.0/0.0. (Remember, these
  584. are max/min values.) Preview this. Notice that the particles are
  585. now rotating with randomly assigned amounts between the max/min
  586. limits you have entered.
  587. Change the values back to 360.0/360.0, 360.0/360.0. Locate the
  588. gadget called Rot Type. It now reads Age. Click it and it will
  589. change to Dist. Preview this and you will see that the amount of
  590. rotation the particle gets is now related to its distance from
  591. the source. As a particle moves farther from the source, its
  592. rotation is decreased. There is also a value you can enter called
  593. the Dist Type Factor. It defaults to 2.0. Changing this to a
  594. lower number lessens the amount of decrease. A higher number
  595. increases the decrease. Try values ranging from 0.0 to 5.0 or so
  596. and the effect should be obvious. The routines are set up so
  597. positive numbers give intuitive results. You can try negative
  598. numbers if you want, but the results are not intuitive.
  599. Notice that there is also an angle execution order gadget, just
  600. like on the path control window. Its purpose, again, like with a
  601. path, is to allow you to specify the order in which the x,y,z
  602. rotations will occur.
  603. Some results you can achieve with rotation are not at all
  604. apparent at first glance. Let's do a quick example to illustrate.
  605. Change the direction variables so they are all 0.0. As you have
  606. found out, this means the particles will all go straight up the
  607. z, along the stem in this case. Now use y rotation values of
  608. 360.0/360.0, 360.0/360.0 and preview. Use the periodic_eases
  609. cspline you have loaded on the INDIVIDUAL PARTICLE cspline (the
  610. one offset just a little to the right) and preview this with the
  611. Rot Type set to Age, then with it set to Dist. If you take a few
  612. moments to think about what you are seeing, it should become
  613. obvious that what you are seeing is what you have specified. Some
  614. very interesting particle behaviors can be achieved using
  615. rotations.
  616.  
  617.  
  618.  
  619. 6: PARTICLE DRIFT:
  620.  
  621. You can specify a global "drift" for the fountain. All particles
  622. created by the fountain will be affected by this. It can be used
  623. to simulate "wind" and "gravity". Let's try it.
  624. Delete the fountain you have in space 2. Add a new fountain. In
  625. the control window, find the gadgets labeled Drift at the bottom
  626. right of the window. There are three, one each for x, y and z.
  627. They are by default set to 0. Change the z drift to 20000.
  628. Preview the anim. You know that a fountain at its default
  629. occupies a spherical space. This is obviously different. The
  630. particles are being moved to their position for the current
  631. frame, then the amount of drift they have experienced by that
  632. frame is added to their position. The result is what you see.
  633. Alter the fountain again and find the gadgets in the right column
  634. labeled DriftFac(tor). Here you see the Orig max/min and Dest
  635. max/min you have experienced with the distance values. The values
  636. represent a multiplier of the amount of drift you have specified.
  637. In this case, 20000 on the Z. The default settings tell the
  638. program to apply 0 percent of the drift at the particle's birth
  639. and 1 (or 100 percent) of the drift at the particles death. You
  640. can use any combination of values you desire for the multipliers,
  641. including negative numbers. If you use different numbers for the
  642. max/min values, the program will distribute values at random
  643. between the values for the particles as they are created.
  644. Notice that you have three cspline controls here. Their use is
  645. identical to that you learned for distance. Click on the
  646. individual particle cspline and use the periodic_eases you have
  647. loaded. Preview the anim. Do you see that the behavior of the
  648. particles directly reflects the cspline? Alter the cspline again
  649. and change the individual cspline. Since you are not using the
  650. cspline that already exists, called Cspline1, select it. Control
  651. it and move the left control point to the bottom, half way
  652. across. Move the right control point to the right, half way down.
  653. This is a "slow to fast" type of cspline. Accept back to the
  654. editor and preview it. Notice that this is a pretty good
  655. simulation of gravity's acceleration. You can also use the drift
  656. to "decay" a pattern that was drawn by a fountain under path
  657. control as you will find out in the next section.
  658.  
  659.  
  660.  
  661. 7: PARTICLE PLACEMENT WITH PATHS
  662.  
  663. This is one of the most interesting, and exciting aspects of the
  664. fountains. You can move the fountains with paths, and control
  665. whether the particles move along with the path, or just are
  666. created at the point the path would be when they are born. This
  667. means you can do magic wands, comets, or even write your name
  668. with a fountain! We will illustrate with a few simple examples.
  669.  
  670. Use the fountain you have been working with using the drift. It
  671. should be nearly default, except the drift should be 20000 on the
  672. z, the driftfac values should be 0.0 in all the orig gadgets and
  673. 1.0 in all the dest gadgets. Use an individual cspline on the
  674. drift factors that is a "slow to fast" type. Now select the tools
  675. menu item make arc. Use 360 degrees, 12 segments, with one radius
  676. of 10000 units. Select the "circle" and use the paths menu item
  677. make poly a path. Turn ON the movement status and last segment.
  678. Also make the exit rotation value on the Y axis 360 and use 3
  679. cycles on the Y rotation. Accept this. Now select the fountain
  680. and assign it to the path. Preview the anim. As you can see, this
  681. is a perfect "magic wand" simulation. The particles obey the
  682. path's instructions at the time of their birth, then ignore them
  683. from then on.
  684.  
  685. Alter the fountain again. Find the gadget labeled Move Type at
  686. the top right of the window. It reads independent. Change it to
  687. read grouped and preview. Now the particles obey the path
  688. instructions over their life. This is useful if you want to move
  689. a fountain along a path, keeping the relationship of the
  690. particles to each other consistent.
  691.  
  692. Turn the move type back to independent. Set the particle number
  693. to entry/exit values of 0/200. Change the distance values so they
  694. are all 0.0. Preview the anim to see the results.
  695.  
  696. Get rid of the drift by changing the drift x,y,z to all 0.0.
  697. (Also free the cspline you have in use for the drift. It is not
  698. necessary, but is just good housekeeping.) Change the life values
  699. to 1.0/1.0, 1.0/1.0. Preview to see the results. Do you
  700. understand what is happening here? Since the particles are set to
  701. live for the length of the animation, they never expire. Since
  702. they are created evenly over the length of the animation, they
  703. are deposited along the path described by the fountain's
  704. movement. This is a kind of 3D spiragraph.
  705.  
  706. There are literally an infinite number of effects you can get
  707. with path control over the fountain particle placement, and
  708. you are probably wanting to play with all types of paths and
  709. values for the fountain. We encourage you to do just that, but
  710. first, move on to the preroll section. It is directly related to
  711. the fountain you now have in the drawing.
  712.  
  713.  
  714. 8: FOUNTAIN PREROLL:
  715.  
  716. With the fountain set as in the previous example, you notice that
  717. the particles are created from start to finish along the path.
  718. What if you wanted the pattern created to exist at the beginning
  719. of the anim? That is what the preroll can do.
  720.  
  721. Alter the fountain. At the upper right, find the gadget called
  722. PreRoll. Click it with the LMB. The window that opens is the
  723. preroll control window. Turn ON preroll. There is a gadget
  724. labeled Assi(gn) PRPath (preroll path). Click it with the LMB.
  725. The window goes away and you are prompted to choose a path.
  726. Select the circular path. The window opens again. There are
  727. several other controls you can use here. We won't use them now.
  728. You can read about them individually in the reference section as
  729. your understanding of the fountains increases and you have a need
  730. for them. Accept the window.
  731. Now click the cspline for the particle number. Add a cspline and
  732. control it. Adjust it so it is a straight line across the top of
  733. the cspline editor window. Accept back to the editor and preview.
  734. Now it is important to discuss what is happening. It may appear
  735. to you that the pattern was made before the animation began, and
  736. is being sustained through the animation, but this is not
  737. entirely true. What is actually happening is the preroll runs the
  738. fountain through a time range from 0.0 to 1.0 BEFORE THE ANIM
  739. BEGINS. This sets the particles into the pattern you see. Now as
  740. the animation begins, the particles have the life values they
  741. received in preroll. The first particle created in preroll was
  742. created at a time of 0.0. By the time the anim begins, it has
  743. aged to a value of 1.0, so it expires and is replaced with a new
  744. particle. In this example, since the preroll path and the regular
  745. path for the fountain are the same, it is created at the exact
  746. position that the old one expired. Let's verify this.
  747. Set the attach point to some point on the circular path. Use the
  748. freehand poly tool to draw a simple triangle of any shape from
  749. here. Make this triangle a path and turn on the movement status
  750. and last segment. Assign the fountain to this new path. Now what
  751. you have is the fountain preroll path setting up the pattern you
  752. have seen, and the triangle moving the fountain during the anim.
  753. Preview this. It will become immediately apparent that as the
  754. particles set up in preroll age and die, the new ones are created
  755. along the new path.
  756. Alter the fountain and change the life values to 2.0/2.0,
  757. 2.0/2.0 and preview this. Now you see that the preroll path has
  758. moved the fountain during preroll and set up the pattern. During
  759. the regular anim, the triangle path is moving the fountain stem,
  760. but since it has already generated its 200 particles during
  761. preroll and they live long enough to never die during the anim,
  762. they stay in their preroll positions.
  763. Now alter the fountain and turn the Move Type from independent to
  764. grouped and preview. This is obviously a useful method of working
  765. if you want a fountain to set up a pattern and then move the
  766. pattern as a whole during an animation. One aside is important to
  767. mention here. If you wanted to see the pattern being built, then
  768. move the pattern as you just saw, you would have to either do it
  769. as two separate animations, then join them, or use two different
  770. fountains, one to draw the pattern, then the other to move it.
  771.  
  772. WARNING: Preroll has no abort. When a fountain is prerolling, you
  773. must wait until it is finished. The time varies based on the
  774. number of particles, and the "shortness" of their lifetimes. The
  775. more particles you ask for and the shorter their lifetimes, the
  776. longer the preroll takes.
  777.  
  778.  
  779.  
  780. You have now covered the first two groups we listed. It is time
  781. to look at the render related options, image, size, color, image
  782. rotation, and obscurring.
  783.  
  784. 9: PARTICLE IMAGE:
  785.  
  786. Choosing a particle image is simply a matter of choosing a
  787. texture list. The texture list member(s) MUST USE A BITMAP.
  788. Procedural textures are not permitted for fountains (or flares)
  789. and will be ignored if they do not use a bitmap. In normal use
  790. you use the flare images provided with the program, or custom
  791. images you have created just for flares and fountains.
  792. You should use a normal type for the members. Others may give
  793. the same results, but are not necessary. The fountains only need
  794. a color component from the members, so just use normal.
  795. You are free to use a previous member with a strength
  796. modification (alpha channel mod) if you want. The texture list
  797. can have as many members as you wish, and will composite nicely.
  798. Keep in mind, however, that since fountains are built up in an
  799. additive manner, you may want to lower the strengths of the
  800. members, as you add more members.
  801. The color slider in the texture control window is treated as the
  802. amount of color in the flare image to replace with the current
  803. member. If it is set to 1.0, the particles will have the color of
  804. the current member, regardless of its previous color. If it is at
  805. 0.0, the color contributed by the current member will not be
  806. used. Its strength will still be used, but the color of the
  807. previous member will not be altered. If the previous member had
  808. no strength at an area where this member does have strength, the
  809. base color of the fountain, as read from the attribute list will
  810. be used.
  811. Notice that the particle image bitmap contributes the strength
  812. and color information to the particle. The color is derived from
  813. the bitmap directly (and can be lessened by using the color
  814. slider in the texture member). The strength is based on the
  815. maximum "luma" at each pixel of the bitmap. The luma is the
  816. maximum value of the red, green and blue color components.
  817.  
  818.  
  819.  
  820. 10: PARTICLE SIZE:
  821.  
  822. There are three distinct methods of altering the size of the
  823. rendered particles. The first is a carry over from flare imaging,
  824. the second is by using the bitmap indices in the texture list
  825. members, and the third other has been developed specifically for
  826. the fountains. We will discuss the first and third, since you
  827. already should know about bitmap indices.
  828.  
  829. The flare carry over method:
  830. These gadgets are the flare width percent, flare height percent,
  831. the relative distance gadget and the Size gadget (a boolean, just
  832. under the frame exit gadget). If the size gadget is set to
  833. "fixed", the values in the flare width/height percent gadgets are
  834. percents of the render screen size. This is almost never used
  835. with fountains, as the 3D nature of the fountain is lost. If the
  836. size gadget is set to "relative", the program images the particle
  837. as though it is a poly of this size in space at the particle's
  838. location. This means you get true parallax and perspective and is
  839. the normal use of the fountain. You then use the flare
  840. width/height to control the aspect ratio of the particle image.
  841.  
  842. The fountain specific method:
  843. Locate the Size gadgets. There are the now familar orig max/min
  844. and dest max/min, along with their cspline controls. These are
  845. multipliers of the size as set in the flare carry over method.
  846. They give you complete control of the particle image size.
  847.  
  848. Normal use is to use the flare carry over gadgets at their
  849. default values, then change the multipliers to alter the size of
  850. the particles of the fountain.
  851.  
  852. WARNING: The larger the particles are, the longer they take to
  853. render. It is quite possible to have particles that are as large
  854. or larger than the screen. If there are a few hundred of these,
  855. it is just like asking the program to average and composite a few
  856. hundred full size pictures, and can take quite a long time. Also,
  857. as the camera gets closer to a particle, it becomes larger on
  858. screen, so even with a normal particle size, it is possible to
  859. have some frames where the camera comes close to particles that
  860. will take significantly longer to render than the ones where the
  861. camera is at more normal distances.
  862.  
  863.  
  864.  
  865. 11: PARTICLE COLOR:
  866.  
  867. In the fountain's simplest use, the particle color comes from the
  868. particle image you are using. However, there are some rather
  869. extensive controls on altering and enhancing this color.
  870.  
  871. First, if a member of the fountain texture list has its color
  872. slider at full value (1.0), the color of the particle at the
  873. areas of some strength of this member will be the color of the
  874. the member's bitmap. (This can be altered or replaced by
  875. succeeding members in the texture list if they have some strength
  876. in the same area.)
  877.  
  878. Second, if a member of the fountain texture list has its color
  879. slider at less than full value (less than 1.0), the color of the
  880. particle at the areas of some strength of this member will be the
  881. color of the flare before this member, plus the color value
  882. setting of the member. So if the texture member has some
  883. strength, and the color slider is at no value (0.0), the particle
  884. will have the strength of the texture member, but the color will
  885. be that of the attribute list, or the color modified by a
  886. previous texture member.
  887.  
  888. If you have the texture list member(s) color sliders set so that
  889. some of the color can be contributed from the attribute list, you
  890. have some specific choices:
  891.  
  892. First, the fountain will index the attribute list based on the
  893. animation global time. The color of all particles will be that of
  894. the attribute list at the current frame of the animation.
  895.  
  896. Second, you can turn ON the AtlInd (attribute list independence)
  897. gadget in the top center of the fountain control window. If on,
  898. the fountain will tell each particle that it should go through
  899. the attribute list completely in its lifetime.
  900.  
  901. If you have the AtlInd on, you can choose to LOCK the particle
  902. into the color it found at the time it was born by depressing the
  903. LOCK gadget under the AtlInd gadget. If a particle is born at
  904. 0.1, it will look at the fountains attribute list and set its
  905. color to what the attribute list has at 0.1. This color will then
  906. stay the same throughout the particle's life.
  907.  
  908. If you have the AtlInd on, you can also choose to RAND(omize) the
  909. particle's color. This is important if all particles are born at
  910. the same time and you want some color differences among them.
  911.  
  912.  
  913. 12: PARTICLE STRENGTH:
  914.  
  915. There are three distinct methods of controlling the particle's
  916. strength. The first exists in the texture list member's strength
  917. gadget. The second exists as an overall fountain strength, and
  918. the third exists as orig and dest values for the individual
  919. particles.
  920.  
  921. First: You can alter the particle strength by lessening the
  922. strength of the texture list member. Normally this strength is
  923. set to 1.0 and the more fountain specific strength gadgets are
  924. used to change the particle's strengths.
  925.  
  926. Second: Locate the Overall Strength gadgets at the bottom of the
  927. left column. Here you can enter entry/exit strengths for the
  928. fountain and control the rate of change between them with a
  929. cspline. All particles in the fountain will be affected by these
  930. values.
  931.  
  932. Third: Locate the Strength orig max/min dest max/min gadgets.
  933. Here, using the techniques you have learned in the previous
  934. tutorials, you can alter the strength of individual particles,
  935. over time in the animation, and over the life of an individual
  936. particle.
  937.  
  938. Keep in mind that it is possible to enter values that are greater
  939. than 1.0. If you set one of the strength values to greater than
  940. 1.0, the final value that is to be composited will still be
  941. clamped to 1.0. You can, however, promote an image to fewer
  942. levels of transparency in this manner. This requires significant
  943. understanding, and is not in the range of normal use. For normal
  944. use, set the strength values between 0.0 and 1.0 and use the
  945. csplines to alter the rate of change.
  946.  
  947.  
  948.  
  949. 13: PARTICLE IMAGE ROTATION:
  950.  
  951. Locate the gadgets labeled Img Rot (image rotation). You will
  952. find the set you have gotten used to, with orig max/min and dest
  953. max/min values.
  954. Use the max/min values as you have for the other options. They
  955. are limits to a random assign. The values are in degrees around
  956. the apparent axis of the particle image.
  957. There is another gadget just below this block labeled Auto
  958. Rotate. If this is ON, the particles will automatically rotate so
  959. the "bottom" of the particle image always points toward the
  960. source of the fountain. This rotation is additive to the values
  961. you enter in the rotation gadgets, so you can use both.
  962.  
  963.  
  964.  
  965. 14: PARTICLE OBSCURRING:
  966.  
  967. There are four options that you can use to control how particle
  968. images interact with polygons and the screen in a drawing. Near
  969. the top left of the window are four boolean gadgets labeled ZBuf,
  970. Obscur, SEdges, and ObsTrn.
  971.  
  972. ZBuf: If this is ON, the program will intermix the particle
  973. images with the polygons in the drawing. This allows polygons to
  974. obscur only a part of a particle image. Note that if the ZBuf
  975. option is on, the particles are not painted as a separate step.
  976. Instead, the drawing will begin immediately (after preroll, if
  977. on) and the calculations and drawing of the fountain are done on
  978. the fly as the scanlines that contain particle images are
  979. rendered.
  980.  
  981. WARNING: If this option is ON, the program will have to create a
  982. buffer for every scanline that has particle images on it. In
  983. fact, a buffer for every particle image on a particular pixel on
  984. a scanline has to be made and maintained. This can take a LONG
  985. time for all the allocation and initialization, especially if the
  986. particles are all near each other, as at the beginning frame of a
  987. standard fountain set up. In general, you DO NOT WANT TO USE A
  988. LARGE NUMBER OF PARTICLES if you are going to use the ZBuf
  989. option.
  990.  
  991. Obscur: If this is ON, the program will test each particle
  992. against all the polygons in the drawing. If a particle is behind
  993. a polygon, it will not be imaged. This is akin to the way real
  994. world lens flares behave, and is suitable for almost all fountain
  995. drawings. It is the suggested method of obscurring fountains.
  996.  
  997. SEdges: If this is ON, the program will test each particle for
  998. being outside the screen boundaries. If it is outside, the image
  999. will not be rendered. If off, the image will render, even if the
  1000. particle is off screen.
  1001.  
  1002. ObsTrn: If this is ON, the program will test each partile against
  1003. all the polygons in the drawing. If a particle is behind a
  1004. polygon, it will then test the polygon for its transparency level
  1005. (as set in the attributes list, not from opacity maps). If the
  1006. poly is transparent, it will lower the strength of the particle
  1007. image, reducing it to 0 strength as a square of the transparency.
  1008.  
  1009.